#include <linux/init.h>//包含宏定义得头文件
#include <linux/module.h>//包含初始化加载模块得头文件

#include <linux/timer.h>//定时器功能头文件
/*包含头文件*/

/*****************实现最简单的定时器功能******************
*驱动文件编写四步骤
(1)包含头文件
(2)驱动模块的入口出口
(3)申明信息
(4)功能实现
*******************************************************/
/*宏定义*/

static void timer_function(unsigned long data);

DEFINE_TIMER(test_timer,timer_function,0,0)//动态创建一个定时器结构体以及超时函数处理

/*超时处理函数*/
static void timer_function(unsigned long data)
{
    printk("timer_function test!");
    mod_timer(&test_time,jiffies+1*HZ);

}

static int hello_init(void)
{
    printk("hello world");
    test_time.rexpires = jiffies+1*HZ;//设置定时器的时间HZ可以在asm-generic/param文件中修改
    add_timer(&test_time);//向内核注册
    return 0;
}

static void hello_exit(void)//退出函数没有返回值
{
    printk("byd byd !");
    del_timer(&test_time);
}
/*功能实现*/

module_init(hello_init);
module_exit(hello_exit);
/*驱动的出口与入口函数都在此处*/
MODULE_LICENSE("GPL");
/*申明信息*/
